#ifndef LECTEURSYMBOLE_H_
#define LECTEURSYMBOLE_H_

#include <fstream>
#include <string>
using namespace std;

#include "LecteurCaractere.h"
#include "Symbole.h"

/*! \file LecteurSymbole.h
    \brief La spécification de la classe LecteurSymbole.h
   
    Décrit la liste des méthodes et attributs associés au lecteur de symboles
    \author Fraisse A. & Froment J.
    \date 06/2012
 */

/*! \class LecteurSymbole
    \brief La classe représentant le lecteur de symboles
   
 Ce lecteur de symboles est constitué des méthodes :
 *      *\li suivant
	*\li getSymCour
	*\li getLigne
	*\li getColonne
 */


class LecteurSymbole {
public:
	LecteurSymbole(string nomFich);    // résultat : symCour = premier symbole du fichier nomFich
	void suivant();                    // passe au symbole suivant du fichier
	inline Symbole getSymCour()      { return symCour; } // accesseur
	inline unsigned int getLigne()   { return ligne;   } // accesseur
	inline unsigned int getColonne() { return colonne; } // accesseur

private:
	LecteurCaractere lc;         // le lecteur de caracteres
	Symbole symCour;             // le symbole courant du lecteur de symboles
	unsigned int ligne, colonne; // coordonnees, dans le fichier, du symbole courant
	void sauterSeparateurs();    // saute dans lc une suite de separateurs consecutifs
	void sauterCommentaire();    // saute un mot de type commentaire (jusqu'à la fin de ligne)
	string motSuivant();         // lit dans lc la chaine du prochain symbole et la renvoie en resultat
};

#endif /* LECTEURSYMBOLE_H_ */ 
